草庐IT

flink 并行度

全部标签

c# - 如何并行处理内存映射文件中的数据

正如内存映射文件的名称所示,我知道可以使用C#中的MemoryMappedFile类将大文件的一部分映射到内存,以实现快速数据处理。我想对内存映射文件做的是并行处理内存映射。为了做到这一点,我有以下问题MemoryMappedFileViewAccessor是线程安全的还是Parallel.For安全的?我实际上制作了一个演示程序来测试这个问题,它似乎在工作。但是找不到关于此的任何引用。如果答案是肯定的,我就完成了。否则,有什么方法可以直接访问数组映射的内存吗?我知道MemoryMappedFileViewAccessor有ReadArray方法,但使用该方法是内存的重复。

c# - .Net 4.0 中的并行功能

我一直在研究.Net4.0中一些新的并行功能的实用性。假设我有这样的代码:foreach(variteminmyEnumerable)myDatabase.Insert(item.ConvertToDatabase());假设myDatabase.Insert正在执行一些操作以插入到SQL数据库中。理论上你可以这样写:Parallel.ForEach(myEnumerable,item=>myDatabase.Insert(item.ConvertToDatabase()));您会自动获得利用多核的代码。但是如果myEnumerable只能由单个线程交互怎么办?Parallel类是否会

c# - 如何使用 C# 并行执行多个 "Pings"

我正在尝试计算一组服务器的平均往返时间。为了加快速度,我想并行执行ping。我编写了一个名为AverageRoundtripTime()的函数,它似乎可以工作,但是,由于我不太了解多线程,所以我想知道我所做的是否正确。请看一下我的代码,让我知道是否可以,或者是否有更好的方法来实现我想要的:publicvoidMain(){//Collectionofhosts.Listhosts=newList();//Add100hoststothecollection.for(Int32i=0;ihosts){//Collectionofthreads.Listthreads=newList();

c# - 在基于事件的异步模式上使用任务并行库

我正在编写一个网络应用程序。消息是这样通过传输发送的:Network.SendMessage(newFirstMessage());我可以注册一个事件处理程序,以便在该消息类型到达时调用,如下所示:Network.RegisterMessageHandler(OnFirstMessageReceived);事件被触发:publicvoidOnFirstMessageReceived(EventArgse){}我正在为我的网络应用程序编写一个自定义身份验证过程,它需要大约五条消息才能完成。如果不使用任务并行库,我将不得不在前面的事件处理程序中编写每个过程的下一步代码,如下所示:publi

c# - 如何并行运行 LINQ 'let' 语句?

我有这样的代码:varlist=newList{1,2,3,4,5};varresult=fromxinlist.AsParallel()leta=LongRunningCalc1(x)letb=LongRunningCalc2(x)selectnew{a,b};假设LongRunningCalc方法每个都需要1秒。上面的代码运行大约需要2秒,因为虽然5个元素的列表是并行操作的,但从let语句调用的两个方法是顺序调用的。但是,这些方法也可以安全地并行调用。它们显然需要为select合并回来,但在那之前应该并行运行-select应该等待它们。有什么办法可以实现吗?

c# - C#中的并行编程

我对学习C#.NET中的并行编程很感兴趣(不是什么都知道,而是基础知识和一些好的实践),因此我决定重新编写我的一个旧程序,它是称为ImageSyncer。ImageSyncer是一个非常简单的程序,它所做的就是扫描一个文件夹并找到所有以.jpg结尾的文件,然后它根据它们的拍摄日期计算文件的新位置(解析xif数据,或其他任何内容)它被称为)。生成位置后,程序会检查该位置是否存在任何现有文件,如果存在,它会查看要复制的文件和“以其方式”文件的最后写入时间。如果它们相等,则跳过该文件。如果不是,则创建并匹配两个文件的md5校验和。如果没有匹配项,则为要复制的文件指定要复制到的新位置(例如,如

c# - C#中的并行树遍历

我需要快速遍历一棵树,我想并行进行。我宁愿使用并行扩展,也不愿手动启动一堆线程。我当前的代码看起来像这样:publicvoidTraverse(Noderoot){varnodeQueue=newQueue();nodeQueue.Enqueue(root);while(nodeQueue.Count!=0){varnode=nodeQueue.Dequeue();if(node.Property=someValue)DoSomething(node);foreach(varnodeinnode.Children){nodeQueue.Enqueue(node);}}}我真的希望Par

c# - 具有指定结果的任务并行库 WaitAny

我正在尝试编写一些代码来并行调用多个不同服务器的Web服务,因此TPL似乎是显而易见的选择。我的Web服务调用中只有一个会返回我想要的结果,而其他所有调用都不会。我正在尝试找到一种有效地拥有Task.WaitAny的方法,但只有在第一个匹配条件的Task返回时才解除阻塞。我尝试使用WaitAny但无法确定过滤器的放置位置。我做到了这一点:publicvoidSearchServers(){varservers=new[]{"server1","server2","server3","server4"};vartasks=servers.Select(s=>Task.Factory.St

c# - 有没有人找到并行运行 C# Selenium RC 测试的方法?

有没有人找到用C#并行编写的运行SeleniumRC/SeleniumGrid测试的方法?我目前有一个使用SeleniumRC的C#驱动程序编写的相当大的测试套件。运行整个测试套件需要一个多小时才能完成。我通常不需要运行整个套件,所以到目前为止这还不是一个问题,但我希望能够更经常地做这件事(即,作为自动构建的一部分)最近,我一直在研究SeleniumGrid项目,该项目的主要目的是让这些测试并行运行。不幸的是,我使用的TestDriven.net插件似乎连续运行测试(即,一个接一个)。我假设NUnit会以类似的方式执行测试,尽管我还没有实际测试过。我注意到NUnit2.5测试版开始谈论

c# - 日志文件的并行 GZip 解压缩 - 调整 MaxDegreeOfParallelism 以获得最高吞吐量

我们每天有多达30GB的GZip日志文件。每个文件包含100.000行,压缩后大小在6到8MB之间。已剥离解析逻辑的简化代码利用了Parallel.ForEach循环。在双NUMA节点、32个逻辑CPU盒(IntelXeonE7-2820@2GHz)上,MaxDegreeOfParallelism处理峰值的最大行数:usingSystem;usingSystem.Collections.Concurrent;usingSystem.Linq;usingSystem.IO;usingSystem.IO.Compression;usingSystem.Threading.Tasks;nam